package main

import (
	"fmt"
)

/*
763. 划分字母区间
字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段，
同一个字母只会出现在其中的一个片段。返回一个表示每个字符串片段的长度的列表。
https://leetcode-cn.com/problems/partition-labels/
 */


func partitionLabels(s string) (partition []int) {
	lastPos := [26]int{}
	for i, c := range s {
		lastPos[c-'a'] = i //最后出现的位置
	}
	fmt.Println(lastPos)
	fmt.Println("--------1--------")
	start, end := 0, 0
	for i, c := range s {
		fmt.Println(start,end,i,c)
		fmt.Println("--------2--------")
		if lastPos[c-'a'] > end {
			end = lastPos[c-'a']
		}
		fmt.Println(start,end,i,c)
		fmt.Println("--------3--------")
		if i == end {
			partition = append(partition, end-start+1)
			start = end + 1
		}
		fmt.Println(start,end,i,c)
		fmt.Println("--------4--------")
	}
	return
}

func f1()  {
	s := "abcdefghijk"
	for _,v := range s{
		fmt.Println(v)
	}
}


func main()  {

	S := "ababcbacadefegdehijhklij"
	fmt.Println(partitionLabels(S))
	//fmt.Println('b'-'a')
	//
	//fmt.Println("--------------")
	//f1()
}
